home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO026.dsk / REPORTER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  16KB  |  239 lines

  1. 100  REM     ****************************************
  2. 110  REM     *                                      *
  3. 120  REM     * Stock Portfolio Tracking Program  V2 *
  4. 130  REM     *  Copyright 1986 by Eric P. King      *
  5. 140  REM     *           REPORTER  V2.01            *
  6. 150  REM     *                                      *
  7. 160  REM     ****************************************
  8. 170  REM 
  9. 180  ONERR  GOTO 2180
  10. 190  PRINT D$"PREFIX"P2$
  11. 200  CALL  PEEK(175) +256 * PEEK(176) -46: GOTO 270
  12. 210  REM    --- COMPUTE APR ---
  13. 220 AP(8) = ((((AP(2) -1) *30) +AP(3)) +((AP(4) -AP(7)) *365)) -(((AP(5) -1) *30) +AP(6)): IF AP(8) = 0  THEN AP(1) = 0: RETURN 
  14. 230 AP(1) =  INT((AP(0)/AP(8)) *365): RETURN 
  15. 240  REM 
  16. 250  REM      <<--- REPORTS MODULE --->>
  17. 260  REM 
  18. 270 N$ = "<< REPORT OPTIONS >>": GOSUB 2360:DI = 0
  19. 280  & "WINDOW",6,20,33: HOME 
  20. 290  IF DI = 0  THEN  PRINT "1) Report to Screen"
  21. 300  IF DI = 1  THEN  PRINT "1) Report to Printer"
  22. 310  IF DI = 2  THEN  PRINT "1) Report to Disk File"
  23. 320  PRINT "2) Current Gain/ Loss"
  24. 330  PRINT "3) Dividend/ Cap.Gain Report": PRINT "4) Gain/ Loss on Sales"
  25. 340  PRINT "5) Return to Main Menu": PRINT 
  26. 350  PRINT "Select: ";
  27. 360  & "IU","#=1..5";"#";A$: IF A$ = "" GOTO 360
  28. 370 A =  VAL(A$): IF A = 1  AND DI = 0  THEN DI = 1: GOTO 280
  29. 380  IF A = 1  AND DI = 1  THEN DI = 2: GOTO 280
  30. 390  IF A = 1  AND DI = 2  THEN DI = 0: GOTO 280
  31. 400  IF A = 5  THEN  PRINT D$"PREFIX"P1$: PRINT D$"RUN STOCKTRK"
  32. 410  IF A = 4  OR A = 3 GOTO 510
  33. 420  & "WINDOW",4,24,1,80: HOME : & "POS",15,6;"Enter the name of the Investment or 1 for a list of"
  34. 430  & "POS",15,7;"Investments on file."
  35. 440  & "POS",30,9;"(RETURN for all investments)": & "POS",35,12
  36. 450  GOSUB 2380: IF A$ = ""  THEN  GOTO 510
  37. 460  IF  VAL(A$) = 1  THEN  GOSUB 2440: GOTO 420
  38. 470 B = 0: FOR I = 1 TO A1: IF A$ = M$(I,0)  THEN B = 1:I = A1
  39. 480  NEXT : IF B = 1 GOTO 510
  40. 490  CALL  -198: & "POS",10,20;"That name is not in the Master file."
  41. 500  & "POS",10,21;"To try again press any key": CALL  -756: GOTO 420
  42. 510  & "WINDOW": HOME : & "POS",15,6;"Enter the report date": & "POS",20,7
  43. 520  & "IU";"##/##/##";DT$: HOME 
  44. 530  & "POS",38,12;"WORKING": & "WINDOW",15: HOME 
  45. 540  ON (A -2) GOTO 930,1160
  46. 550  REM     -- PREPARE CURRENT GAIN/ LOSS REPORT
  47. 560  PRINT D$"OPEN /RAM/REPORT,L80": PRINT D$"WRITE /RAM/REPORT,R1"
  48. 570  PRINT "CURRENT GAIN/ LOSS     "DT$: PRINT D$"WRITE /RAM/REPORT,R2"
  49. 580 B$ = Z1$:C$ = "NAME   LOT# QTY      $COST    CURRENT $GN/LOSS      APR"
  50. 590  & "LAY",C$ ON B$ AT 1:C$ = "PUR DATE": & "LAY",C$ ON B$ AT 60:C$ = "B/S  T/P": & "LAY",C$ ON B$ AT 69
  51. 600  PRINT B$: PRINT D$"WRITE /RAM/REPORT,R3": PRINT Z2$
  52. 610 RT = 4: FOR I = 1 TO A1
  53. 620  IF A$ < >M$(I,0)  AND A$ < >""  THEN  GOTO 850
  54. 630  PRINT D$"OPEN MASTER": PRINT D$"READ MASTER,R"I
  55. 640  FOR J = 0 TO 9: INPUT T$(J): NEXT : PRINT D$"CLOSE MASTER"
  56. 650  PRINT D$"OPEN PRICES/"M$(I,0): PRINT D$"READ PRICES/"M$(I,0)",R0"
  57. 660  INPUT A: IF A = 0  THEN  PRINT D$"CLOSE PRICES/"M$(I,0): NEXT : GOTO 870
  58. 670  PRINT D$"READ PRICES/"M$(I,0)",R"A: FOR J = 0 TO 6: INPUT U$(J): NEXT : PRINT D$"CLOSE PRICES/"M$(I,0)
  59. 680 A(0) =  VAL(T$(2)):A(1) =  VAL(T$(3)):A(2) =  VAL(T$(7)):A(3) =  VAL(U$(2)):A(4) = (A(1) *A(0)) +A(2)
  60. 690  IF T$(8) = "B"  THEN A(5) = (A(0) *A(3)) -A(2):A(6) = A(5) -A(4)
  61. 700  IF T$(8) = "S"  THEN A(5) = (A(0) *A(3)) +A(2):A(6) = A(4) -A(5)
  62. 710  IF A(4) = 0  THEN A(6) = A(5)
  63. 720  IF A(6) = 0  THEN AP(1) = 0: GOTO 770
  64. 730  IF A(1) = 0  THEN AP(1) = 100: GOTO 770
  65. 740 A(7) = ((( ABS(A(6)))/A(4)) *100)
  66. 750 AP(0) = A(7):AP(2) =  VAL(U$(4)):AP(3) =  VAL(U$(5)):AP(4) =  VAL(U$(6)):AP(5) =  VAL(T$(4)):AP(6) =  VAL(T$(5)):AP(7) =  VAL(T$(6)): GOSUB 220
  67. 760  IF A(6) <0  THEN AP(1) = AP(1) -(2 *AP(1))
  68. 770 A(10) = A(10) +A(4):A(12) = A(12) +A(6)
  69. 780 U$(0) =  STR$(A(4)):U$(1) =  STR$(A(5)):U$(2) =  STR$(A(6)):U$(3) =  STR$(AP(1)):U$(5) =  STR$(A(3)): IF  LEN(T$(2)) >7  THEN T$(2) =  LEFT$(T$(2),7)
  70. 790  FOR J = 0 TO 2: IF  LEN(U$(J)) >7  THEN U$(J) =  LEFT$(U$(J),7)
  71. 800  NEXT :U$(4) = T$(4) +"/" +T$(5) +"/" +T$(6):B$ = Z1$:C$ = "." +Z1$
  72. 810  & "LAY",T$(0) ON B$ AT 1: & "LAY",T$(1) ON B$ AT 9: & "LAY",T$(2) ON B$ AT 13: & "LAY",U$(0) ON B$ AT 22: & "LAY",U$(1) ON B$ AT 31
  73. 820  & "LAY",U$(2) ON B$ AT 41: & "LAY",U$(3) ON B$ AT 53: & "LAY",U$(4) ON B$ AT 60: & "LAY",T$(8) ON B$ AT 70: & "LAY",T$(9) ON B$ AT 73
  74. 830  & "LAY",T$(3) ON C$ AT 22: & "LAY",U$(5) ON C$ AT 31: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT
  75. 840  PRINT C$:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT :RT = RT +1: FOR J = 0 TO 9:T$(J) = "":U$(J) = "":A(J) = 0:AP(J) = 0: NEXT 
  76. 850  NEXT : IF A(12) = 0  THEN A(13) = 0: GOTO 870
  77. 860 A(13) =  INT((( ABS(A(12)))/A(10)) *100): IF A(12) <0  THEN A(13) = A(13) -(2 *A(13))
  78. 870 U$(0) =  STR$(A(10)):U$(2) =  STR$(A(12)):U$(3) =  STR$(A(13)):U$(3) = U$(3) +" RAW GN/ LOSS %"
  79. 880  FOR I = 0 TO 2: IF  LEN(U$(I)) >8  THEN U$(I) =  LEFT$(U$(I),8)
  80. 890  NEXT :B$ = "." +Z1$: & "LAY",U$(0) ON B$ AT 20: & "LAY",U$(2) ON B$ AT 41: & "LAY",U$(3) ON B$ AT 53
  81. 900  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT Z2$:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$: PRINT D$"WRITE /RAM/REPORT,R0"
  82. 910  PRINT RT: PRINT D$"CLOSE": FOR I = 0 TO 13:U$(I) = "":A(I) = 0: NEXT : GOTO 1580
  83. 920  REM     -- PREPARE DIVIDEND/ CAP.GAIN REPORT --
  84. 930  PRINT D$"OPEN DIVIDEND": PRINT D$"READ DIVIDEND,R0": INPUT A: IF A >0 GOTO 950
  85. 940  PRINT D$"CLOSE": & "WINDOW": HOME : & "POS",1,10: & "CENTER","THERE ARE NO DIVIDENDS ON FILE": PRINT : & "CENTER","Press any key to continue": CALL  -756:FL = 90: GOTO 1020
  86. 950  PRINT D$"OPEN /RAM/REPORT,L80": PRINT D$"WRITE /RAM/REPORT,R1": PRINT "DIVIDEND RECORD    "DT$: PRINT D$"WRITE /RAM/REPORT,R2"
  87. 960  PRINT "NAME     TOT/DIV      RECORD DATE": PRINT D$"WRITE /RAM/REPORT,R3": PRINT Z2$
  88. 970 RT = 4: FOR I = 1 TO A: PRINT D$"READ DIVIDEND,R"I: FOR J = 0 TO 4: INPUT T$(J): NEXT :T$(5) = T$(2) +"/" +T$(3) +"/" +T$(4)
  89. 980 A(0) = A(0) + VAL(T$(1)):B$ = Z1$: & "LAY",T$(0) ON B$ AT 1: & "LAY",T$(1) ON B$ AT 10: & "LAY",T$(5) ON B$ AT 23
  90. 990  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:RT = RT +1: FOR J = 0 TO 5:T$(J) = "": NEXT : NEXT : PRINT D$"CLOSE DIVIDEND"
  91. 1000 T$(0) =  STR$(A(0)):B$ = "." +Z1$: & "LAY",T$(0) ON B$ AT 10: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT Z2$:RT = RT +1
  92. 1010  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:T$(0) = "":A(0) = 0
  93. 1020  PRINT D$"OPEN CAP.GAIN": PRINT D$"READ CAP.GAIN,R0": INPUT A: IF A >0 GOTO 1060
  94. 1030  PRINT D$"CLOSE CAP.GAIN": & "WINDOW": HOME : & "POS",1,10: & "CENTER","THERE ARE NO CAPITOL GAINS ON FILE": PRINT : & "CENTER","Press any key to continue": CALL  -756
  95. 1040  IF FL = 90  THEN FL = 0: GOTO 270
  96. 1050  PRINT D$"WRITE /RAM/REPORT,R0": PRINT RT: PRINT D$"CLOSE": GOTO 1580
  97. 1060  IF FL < >90  THEN B$ = "": FOR I = 0 TO 3:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$: NEXT :RT = RT +1
  98. 1070  IF FL = 90  THEN  PRINT D$"OPEN /RAM/REPORT,L80":RT = 1
  99. 1080  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT "CAPITOL GAIN RECORD    "DT$:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT
  100. 1090  PRINT "NAME     AMOUNT       RECORD DATE":RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT Z2$
  101. 1100 RT = RT +1: FOR I = 1 TO A: PRINT D$"READ CAP.GAIN,R"I: FOR J = 0 TO 4: INPUT T$(J): NEXT :T$(5) = T$(2) +"/" +T$(3) +"/" +T$(4)
  102. 1110 A(0) = A(0) + VAL(T$(1)):B$ = Z1$: & "LAY",T$(0) ON B$ AT 1: & "LAY",T$(1) ON B$ AT 10: & "LAY",T$(5) ON B$ AT 23
  103. 1120  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:RT = RT +1: FOR J = 0 TO 5:T$(J) = "": NEXT : NEXT : PRINT D$"CLOSE CAP.GAIN"
  104. 1130 T$(0) =  STR$(A(0)):B$ = "." +Z1$: & "LAY",T$(0) ON B$ AT 10: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT Z2$:RT = RT +1
  105. 1140  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:T$(0) = "":A(0) = 0: PRINT D$"WRITE /RAM/REPORT,R0": PRINT RT: PRINT D$"CLOSE": GOTO 1580
  106. 1150  REM     -- PREPARE GAIN/ LOSS ON SALES REPORT --
  107. 1160  PRINT D$"OPEN SALES": PRINT D$"READ SALES,R0": INPUT A
  108. 1170  IF A >0 GOTO 1200
  109. 1180  PRINT D$"CLOSE": & "WINDOW": HOME : & "POS",1,10: & "CENTER","THERE ARE NO SALES ON FILE"
  110. 1190  CALL  -198: FOR I = 0 TO 1000: NEXT : GOTO 270
  111. 1200 U$(0) = "DATE   SHARE COST  SALE   SOLD FOR   $GAIN/ APR"
  112. 1210 U$(1) = "NAME   LOT# QTY     BOUGHT    /COMM    DATE"
  113. 1220 U$(2) = " /COMM    LOSS             B/S":B$ = Z1$:C$ = Z1$
  114. 1230 B$ = "." +B$: & "LAY",U$(0) ON B$ AT 21: & "LAY",U$(1) ON C$ AT 1
  115. 1240  & "LAY",U$(2) ON C$ AT 49: PRINT D$"OPEN /RAM/REPORT,L80"
  116. 1250  PRINT D$"WRITE /RAM/REPORT,R1"
  117. 1260  PRINT "GAIN/ LOSS ON SALES      "DT$: PRINT D$"WRITE /RAM/REPORT,R2"
  118. 1270  PRINT B$: PRINT D$"WRITE /RAM/REPORT,R3": PRINT C$
  119. 1280  PRINT D$"WRITE /RAM/REPORT,R4": PRINT Z2$
  120. 1290 RT = 5: FOR I = 1 TO A
  121. 1300  PRINT D$"READ SALES,R"I
  122. 1310  FOR J = 0 TO 14: INPUT T$(J): NEXT 
  123. 1320  IF  VAL(T$(9)) = 0 GOTO 1500
  124. 1330 A(0) =  VAL(T$(2)):A(1) =  VAL(T$(3)):A(2) =  VAL(T$(7)):A(3) =  VAL(T$(9)):A(4) =  VAL(T$(10)):A(5) =  VAL(T$(14)): IF A(2) < >0  THEN A(2) = (A(2)/A(0)) *A(3)
  125. 1340 A(6) = (A(3) *A(1)) +A(2):A(7) = A(3) *A(1):A(8) = A(3) *A(4): IF T$(8) = "B"  THEN A(9) = A(8) -A(5) -A(6)
  126. 1350  IF T$(8) = "S"  THEN A(9) = A(6) -A(8) -A(5)
  127. 1360  IF A(9) = 0  THEN AP(1) = 0: GOTO 1400
  128. 1370 AP(0) = (( ABS(A(9)))/A(6)) *100:AP(2) =  VAL(T$(11)):AP(3) =  VAL(T$(12)):AP(4) =  VAL(T$(13)):AP(5) =  VAL(T$(4)):AP(6) =  VAL(T$(5))
  129. 1380 AP(7) =  VAL(T$(6)): GOSUB 220: IF A(9) <0  THEN AP(1) = AP(1) -(2 *AP(1))
  130. 1390 A(13) = A(13) +A(9)
  131. 1400 A(11) = A(11) +A(6):U$(0) = T$(4) +"/" +T$(5) +"/" +T$(6):U$(1) =  STR$(A(7)):U$(2) = T$(11) +"/" +T$(12) +"/" +T$(13)
  132. 1410 U$(3) =  STR$(A(8)):U$(4) =  STR$(A(9)):U$(5) =  STR$(AP(1)):U$(6) =  STR$(A(2)): IF  LEN(U$(1)) >7  THEN U$(1) =  LEFT$(U$(1),7)
  133. 1420  IF  LEN(U$(3)) >7  THEN U$(3) =  LEFT$(U$(3),7)
  134. 1430  IF  LEN(U$(4)) >7  THEN U$(4) =  LEFT$(U$(4),7)
  135. 1440  IF  LEN(U$(6)) >6  THEN U$(6) =  LEFT$(U$(6),6)
  136. 1450 B$ = Z1$: & "LAY",T$(0) ON B$ AT 1: & "LAY",T$(1) ON B$ AT 8: & "LAY",T$(9) ON B$ AT 13: & "LAY",U$(0) ON B$ AT 21: & "LAY",U$(1) ON B$ AT 30
  137. 1460  & "LAY",U$(2) ON B$ AT 40: & "LAY",U$(3) ON B$ AT 49: & "LAY",T$(8) ON B$ AT 77:C$ = "." +Z1$: & "LAY",U$(6) ON C$ AT 30
  138. 1470  & "LAY",T$(14) ON C$ AT 49: & "LAY",U$(4) ON C$ AT 58: & "LAY",U$(5) ON C$ AT 69
  139. 1480  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:RT = RT +1: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT C$:RT = RT +1
  140. 1490  PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT :RT = RT +1: FOR J = 0 TO 14:T$(J) = "": NEXT : FOR J = 0 TO 10:AP(J) = 0:A(J) = 0:U$(J) = "": NEXT 
  141. 1500  NEXT : PRINT D$"CLOSE SALES": PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT Z2$:RT = RT +1
  142. 1510  IF A(13) < >0  THEN A(10) =  INT((( ABS(A(13)))/A(11)) *100): IF A(13) <0  THEN A(10) = A(10) -(2 *A(10))
  143. 1520 U$(0) =  STR$(A(11)):U$(2) =  STR$(A(13)):U$(3) =  STR$(A(10)):B$ = "." +Z1$
  144. 1530  FOR J = 0 TO 2: IF  LEN(U$(J)) >7  THEN U$(J) =  LEFT$(U$(J),7)
  145. 1540  NEXT : & "LAY",U$(0) ON B$ AT 30: & "LAY",U$(2) ON B$ AT 59: & "LAY",U$(3) ON B$ AT 69: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$:RT = RT +1
  146. 1550 B$ = "." +Z1$:C$ = "RAW % GN/LS": & "LAY",C$ ON B$ AT 67: PRINT D$"WRITE /RAM/REPORT,R"RT: PRINT B$
  147. 1560  PRINT D$"WRITE /RAM/REPORT,R0": PRINT RT: PRINT D$"CLOSE": FOR J = 0 TO 3:U$(J) = "": NEXT : FOR J = 10 TO 13:A(J) = 0: NEXT 
  148. 1570  REM     -- PRINT REPORT --
  149. 1580  ON DI GOTO 1690,1890
  150. 1590  REM     - PRINT REPORT TO SCREEN -
  151. 1600  & "WINDOW": HOME : PRINT D$"OPEN /RAM/REPORT"
  152. 1610  PRINT D$"READ /RAM/REPORT,R0": INPUT A:J = 1: FOR I = 1 TO A
  153. 1620  PRINT D$"READ /RAM/REPORT,R"I: INPUT B$: PRINT B$:J = J +1
  154. 1630  IF J <20  THEN  NEXT : GOTO 1660
  155. 1640  PRINT D$: PRINT : & "CENTER","<MORE>  Press any key to continue."
  156. 1650  CALL  -756: HOME :J = 1: NEXT 
  157. 1660  PRINT D$"CLOSE": PRINT : & "CENTER","<DONE>  Press any key to exit.": CALL  -756
  158. 1670  PRINT D$"DELETE /RAM/REPORT": HOME : GOTO 270
  159. 1680  REM     - PRINT REPORT TO PRINTER -
  160. 1690  & "WINDOW": HOME : & "WINDOW",10,24,25: HOME :B =  PEEK(64448)
  161. 1700  IF B = 0 GOTO 1740
  162. 1710  PRINT "Enter Slot (1-7)  ";
  163. 1720  & "IU","#=1..7";"#";A$:SL =  VAL(A$): PRINT "Serial or Parallel (S/P)  ";
  164. 1730  & "IU","#=S,P";"#";PT$
  165. 1740  PRINT : PRINT : PRINT "Set Printer to Top of Form"
  166. 1750  PRINT "and press any key to print report."
  167. 1760  CALL  -756: & "WINDOW": PRINT  CHR$(12); CHR$(21)
  168. 1770  IF B < >0 GOTO 1790
  169. 1780 A$ =  CHR$(9): PRINT D$"PR#1": PRINT A$"80N": PRINT A$"14B";A$"L";A$"0P": GOTO 1800
  170. 1790  PRINT D$"PR#"SL: IF PT$ = "P"  THEN  PRINT  CHR$(9);"80N"
  171. 1800  PRINT D$"OPEN /RAM/REPORT"
  172. 1810  PRINT D$"READ /RAM/REPORT,R0": INPUT X:J = 1: FOR I = 1 TO X
  173. 1820  PRINT D$"READ /RAM/REPORT,R"I: INPUT B$: PRINT B$:J = J +1
  174. 1830  IF J <60  THEN  NEXT : GOTO 1860
  175. 1840  IF I < >X  THEN  FOR K = 0 TO 11: PRINT : NEXT :J = 1
  176. 1850  NEXT 
  177. 1860  PRINT D$"PR#0": PRINT D$"PR#3": PRINT D$"CLOSE"
  178. 1870  PRINT D$"DELETE /RAM/REPORT": HOME : PRINT : GOTO 270
  179. 1880  REM     - PRINT REPORT TO A DISK FILE -
  180. 1890  FOR I = 0 TO 2:U$(I) = "": NEXT : & "WINDOW": HOME : & "POS",1,2
  181. 1900  & "CENTER","SEND REPORT TO TEXT FILE ON DISK": PRINT : PRINT 
  182. 1910  PRINT "This option writes the report to a text file on disk that can"
  183. 1920  PRINT "then be merged into a word processor document."
  184. 1930  PRINT "Be sure to use the complete PRODOS pathname for the file that"
  185. 1940  PRINT "you are creating. The required /'s are added by the program"
  186. 1950  PRINT "for you automatically.": PRINT : PRINT 
  187. 1960  & "CENTER","Enter pathname elements. Up to 3 are allowed."
  188. 1970  & "POS",1,14: CALL  -958: PRINT "Enter Volume name. ";
  189. 1980  & "IU","#=A..Z,/,.,0..9;*=A..Z";"*##############";U$(0)
  190. 1990  IF U$(0) = "" GOTO 1970
  191. 2000 U$(0) = "/" +U$(0)
  192. 2010  & "POS",1,16: CALL  -958: PRINT "Enter name.  ";
  193. 2020  & "IU","#=A..Z,/,.,0..9;*=A..Z";"*##############";U$(1)
  194. 2030  IF U$(1) = "" GOTO 2010
  195. 2040 U$(0) = U$(0) +"/" +U$(1)
  196. 2050  & "POS",1,18: CALL  -958: PRINT "Enter name.  ";
  197. 2060  & "IU","#=A..Z,/,.,0..9;*=A..Z";"*##############";U$(2)
  198. 2070  IF U$(2) = "" GOTO 2090
  199. 2080 U$(0) = U$(0) +"/" +U$(2)
  200. 2090 FL = 4: PRINT D$"CREATE "U$(0)",TTXT"
  201. 2100  PRINT D$"OPEN /RAM/REPORT": PRINT D$"READ /RAM/REPORT,R0": INPUT A
  202. 2110  FOR I = 1 TO A: PRINT D$"READ /RAM/REPORT,R"I: INPUT B$
  203. 2120  PRINT D$"APPEND "U$(0): PRINT B$: NEXT : PRINT D$"CLOSE"
  204. 2130  PRINT D$"DELETE /RAM/REPORT": GOTO 270
  205. 2140  REM 
  206. 2150  REM      <<--- ERROR ROUTINES --->>
  207. 2160  REM 
  208. 2170  IF FL = 4 GOTO 2220
  209. 2180  & "ERR",EC,EL: POKE 216,0: ONERR  GOTO 2180
  210. 2190  PRINT D$"CLOSE": CALL  -211: PRINT : PRINT "UNHANDLED ERROR"
  211. 2200  PRINT "ERROR # "EC"  IN LINE  "EL: END 
  212. 2210  REM     -- PATHNAME PROBLEM IN ATTEMPT TO WRITE REPORT TO DISK FILE --
  213. 2220  HOME : CALL  -211: PRINT : PRINT : IF EC = 9  OR EC = 17 GOTO 2260
  214. 2230  IF EC = 19 GOTO 2290
  215. 2240  IF EC = 6 GOTO 2320
  216. 2250  GOTO 2190
  217. 2260  PRINT "THERE IS NO ROOM ON THE DISK, OR THE DIRECTORY IS FULL."
  218. 2270  PRINT "CHANGE DISKS OR TRY A DIFFERENT DIRECTORY NAME."
  219. 2280  & "CENTER","PRESS ANY KEY TO TRY AGAIN": CALL  -756: GOTO 2350
  220. 2290  PRINT "A FILE WITH THE SAME NAME ALREADY EXISTS."
  221. 2300  PRINT "CHANGE DISKS OR USE A DIFFERENT FILE NAME."
  222. 2310  & "CENTER","PRESS ANY KEY TO TRY AGAIN": CALL  -756: GOTO 2350
  223. 2320  PRINT "THE PATHNAME THAT YOU ENTERED IS INVALID, OR YOU HAVE"
  224. 2330  PRINT "NOT PLACED A DISK WITH THAT NAME IN A DRIVE."
  225. 2340  & "CENTER","PRESS ANY KEY TO TRY AGAIN": CALL  -756
  226. 2350 FL = 0: GOTO 1940
  227. 2360  & "WINDOW": HOME : VTAB 2: & "CENTER",N$: & "WINDOW",4: HOME : RETURN 
  228. 2370  REM     -- GET INVESTMENT NAME SUB --
  229. 2380  PRINT "Name: ";: & "IU","#=0..9,A..Z,.;@=A..Z,1";"@#####";A$: RETURN 
  230. 2390  REM     -- STANDARD SPIEL --
  231. 2400  & "POS",15,6;"Enter the name of the Investment or 1 for a list of"
  232. 2410  & "POS",15,7;"Investments on file."
  233. 2420  & "POS",30,9;"(RETURN to exit to Main Menu)": & "POS",35,12: RETURN 
  234. 2430  REM      --- DISPLAY NAMES IN MASTER FILE SUB ---
  235. 2440 N$ = "<< NAMES IN USE >>": GOSUB 2360
  236. 2450  & "WINDOW",4,24,35: HOME 
  237. 2460 J = 0: FOR I = 1 TO A1: PRINT M$(I,0)"     Lot# "M$(I,1)
  238. 2470 J = J +1: IF J = 15  THEN  PRINT "=MORE= PRESS ANY KEY";: CALL  -756: HOME :J = 0
  239. 2480  NEXT : PRINT "=THATS ALL= PRESS ANY KEY";: CALL  -756: RETURN